Общие сведения

  1. Комментарии обозначаются аналогично многим другим языкам: // и парой /* */
  2. Язык игнорирует регистр.
  3. Символ ";" означает разделение строки и конец инструкции. Если же после символа нет ничего - то это ошибка.
  4. Директива препроцессора обозначается символом # в начале строки. (на момент написания этой справки доступна всего одна директива #include)

Простые типы данных

Запись простых типов данных в выражениях:

Целый - 1, 20, 4000;
С плавающей точкой - 3.14, .1
Строка - "stroka"
Константа - null, true, false, pi
Переменная - my_var


Переменные

Имена переменных должны начинаться с латинской буквы или символа подчёркивания, а далее могут содержать как цифры так и буквы так и смвол подчёркивания. Например:

local myvar
local _myvar
local _my_var1

Ниже приведена таблица видов переменных.
Ключевое слово для объявления Область видимости Значение после вызова функции
local Вызываемая функция Не сохраняется
static Вызываемая функция Сохраняется
global Везде Сохраняется
public Везде Сохраняется

Примечание: public отличается от глобальной переменной лишь возможностью доступа к ней вне скрипта через список. Так же переменные такого типа участвуют в инстансинге.

При объявлении необходимо учитывать:

Операторы

Ниже приведена таблица опреаторов (по порядку их обработки)
1 Простые типы данных, function(), (), [], args
2 *(указатель), ++, --
3 **(возведение в степень)
4 ~
5 -(смена знака)
6 *, /, %
7 +, -
8 <<, >>
9 &
10 ^
11 |
12 <, <=, >, >=, ==, !=
13 not
14 and
15 or
16 len, typeof
17 =

Ключевые слова (зарезервированные идентификаторы)

Константы

Константы могут быть объявлены как и обычные переменные. Так же они могут быть объявлены ссылкой на другую константу, например:

const a=1
const b=a


Существуют так же суперконстанты - константы объявленные по умолчанию. Таковыми являются null, true, false, pi и т.д.

Функции

Функции объявляются ключевым словом def имя_функции(параметры). Значениями параметров по умолчанию могут быть не только простые типы данных, но и выражения. Все параметры являются локальными переменными объявленной функции. При объявлении функции необходимо учитывать, что если объявлена функция, константа, локальная или глобальная переменная с таким же именем, то это считается ошибкой.
Выражение по умолчанию в параметре вычисляется только в случае если значанее параметра не передано при вызове функции.

Массивы

Массивы создаются с помощью квадратных скобок. Например:

array=[1, 2, 3] //Создаём массив из трёх чисел 1, 2, 3

Доступ к массиву как и во многих других ЯП осуществляется с помощью индекса:

a=array[0] //a=1
b=array[1] //b=2

Размер массива можно узнать с помощью оператора len:

length=len array //length=3

Несмотря на то что строки не представленны массивами, их длину тоже можно узнать с помощью оператора len. (пример: len "stroka")

Указатель

Чтобы получить указатель на переменную нужно перед идентификатором поставить знак "*". Указатели служат для того чтобы передать саму переменную (а не её значение) в аргумент функции. Пример:

local r, g, b
get_color(*r, *g, *b)

local color=[*r, *g, *b]